package com.shujia.wyh.day18;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/*
        List集合特有的迭代器遍历：
            ListIterator listIterator() 返回列表中的列表迭代器（按适当的顺序）。
 */
public class ListDemo3 {
    public static void main(String[] args) {
        //创建List集合对象
        List list = new ArrayList();

        //添加元素到集合中
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("world");
        list.add("hadoop");
        System.out.println(list);
        System.out.println("================================");

        //获取List专有的迭代器
        //一个迭代器只有一个光标可以进行移动
        ListIterator listIterator = list.listIterator();
//        Object previous = listIterator.previous(); //NoSuchElementException
//        System.out.println(previous);

        //由于我们通过观察发现，ListIterator也是一个接口并且是继承自Iterator接口的，所以我们确定的是
        //ListIterator中也有hashNext()和next()方法
//        while (listIterator.hasNext()) {
//            Object next = listIterator.next();
//            String s = (String) next;
//            System.out.println(s + "字符串的长度为：" + s.length());
//        }

        //boolean hasPrevious()返回true如果遍历反向列表，列表迭代器有多个元素。
        //E previous()返回列表中的上一个元素，并向后移动光标位置
        //要想反向遍历，就必须先进行一次正向遍历，将光标移动到最后一个
        //所以这个遍历方式，用的很少
//        while (listIterator.hasPrevious()) {
//            Object previous = listIterator.previous();
//            String s = (String) previous;
//            System.out.println(s + "字符串的长度为：" + s.length());
//        }

    }
}
